/**
 * Copyright (2017, ) Institute of Software, Chinese Academy of Sciences
 * Copyright (2017, ) Bocloud Co,. Lmt
 */
package cn.abcsys.devops.core;

import java.util.Properties;

/**
 * @author wuheng@{otcaix.iscsa.ac.cn,beyondcent.com}
 * @date   May 19, 2017
 *
 * <code>Logger<code>的目的是获取应用的日志信息，
 * 应用通常包含多个组件，比如负载均衡、应用服务器、数据库
 * 需要统一收集，展示出每天日志数和实时日志信息
 */
public interface Logger {

	/************************************************
	 * 
	 *                 核心功能
	 *
	 ************************************************/
	/**
	 * 
	 * @param uuid  查询日志的标识符
	 * @param from  查询从第几条开始
	 * @param size  每次查询多少条数据
	 * @param period 查询的上界是最近多久的日志
	 * @param props
	 * @return
	 * @throws Exception
	 */
	public Object getLogs(Object uuid, int from, Logger.Size size, 
							Logger.Period period, Properties props) throws Exception;
	
	/************************************************
	 * 
	 *                 辅助功能
	 *
	 ************************************************/
	/**
	 * @author wuheng@{otcaix.iscsa.ac.cn,beyondcent.com}
	 * @date   May 19, 2017
	 *
	 */
	public static enum Size {
		SIZE20,
		SIZE50,
		SIZE100,
	}
	
	/**
	 * 监测周期
	 * 
	 * @author wuheng@{otcaix.iscsa.ac.cn,beyondcent.com}
	 * @date   May 19, 2017
	 *
	 */
	public static enum Period {
		/**
		 * 监测周期：最近一周
		 */
		LATEST_WEEK,
		/**
		 * 监测周期：最近一月
		 */
		LATEST_Month,
	}
}
